let obj1 = {
  a: '123',
  b: '456'
}
let obj2 = {
  a: 'abc',
  b: 'lkj'
}

function fn() {
  let xx = () => {
    console.log(this.a)
  }
  return xx()
}

// 事实证明箭头函数的最终this指向是跟执行时当前执行的上下文关联的❌
// 箭头函数声明在普通函数内部，this指向普通函数
fn.call(obj1) // 123
fn.call(obj2) // abc

// 箭头函数声明在全局作用域，this指向模板/全局作用域
let xx2 = () => {
  console.log(this.a)
}
function fn2() {
  return xx2()
}
fn2.call(obj1) // undefined
fn2.call(obj2) // undefined

// 🪝箭头函数的 this 指向是在它被定义的时候就确定了，而不是在它被调用的时候。箭头函数不会创建自己的 this 上下文，因此它的 this 值继承自它所在的外围函数的 this 值。

// TODO: 补充：取决于箭头函数声明的位置
